// 《围棋》作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package runtime

import "unsafe"

// go:cgo_export_static main 

// 由运行时/cgo在链接到二进制时填写。中国的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的一个国家的的政府的的的的的的政府的政府的一个国家的政府的一个国家的政府的政府的政府的一个国家的政府的政府的政府的一个国家的政府的政府的政府的一个国家的政府的一个国家的政府的政府的一个国家的政府的政府的一个国家的政府的政府的政府的政府的政府的一级的政府的政府的。14

// go:linkname _cgo_yield _cgo_yield 

var (
	_cgo_init                     unsafe.Pointer
	_cgo_thread_start             unsafe.Pointer
	_cgo_sys_thread_create        unsafe.Pointer
	_cgo_notify_runtime_init_done unsafe.Pointer
	_cgo_callers                  unsafe.Pointer
	_cgo_set_context_function     unsafe.Pointer
	_cgo_yield                    unsafe.Pointer
)

// iscgo由运行时/cgo包
var iscgo bool

// cgoHasExtraM在启动时为cgo创建额外的M设置。
// 在任何C/C++代码调用cgocallback之前，必须创建额外的M。
var cgoHasExtraM bool

// cgo生成的代码调用cgoUse（使用go:linkname获取
// 未报告的名称）。这些调用有两个用途：
// 1）它们是不透明的，无法逃避分析，因此该参数被认为是
// 逃逸到堆中。
// 2）他们会一直保持争论，直到通话结束；调用是在C对参数的（假定）使用结束后发出的。不应实际调用cgoAlwaysFalse（参见cgoAlwaysFalse）。
func cgoUse(any) { throw("cgoUse should not be called") }

// cgoAlwaysFalse是一个始终为false的布尔值。
// cgo生成的代码表示如果cgoAlwaysFalse{cgoUse（p）}。
// 编译器看不到cgoAlwaysFalse总是false，所以它发出测试并保持调用，给出所需的
// 转义分析结果。测试比电话便宜。
var cgoAlwaysFalse bool

var cgo_yield = &_cgo_yield
